import socket

def get_usable_port(port):
    """
    根据输入端口号，递增递归查询可使用端口
    :param port: 端口号
    :return: 如果被占用，递归；否则返回可使用port
    """
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        try:
            s.bind(('127.0.0.1', port))
        except socket.error:
            # 端口被占用，port + 1递归
            return get_usable_port(port + 1)
    # 可用端口
    return port

if __name__ == '__main__':
    print(get_usable_port(5173))